/* eslint-disable semi,no-global-assign */
/**
 * Created by liyu on 2018/1/5.
 */

// 相当于vue的data，用于存放数据变量
const state = { // 全局数据区
  count: 1
};
// 相当于vue中的methods，用来修改state中的变量，放方法
const mutations = { // setter方法，存数据
  add (state, n) {
    state.count += n;
  },
  reduce (state) {
    state.count --;
  }
};
// 相当于vue中的computed，用来获取state中的变量，里面的函数都return一个state中的变量
const getters = { // getter方法，拿数据
  getCount: function (state) {
    return state.count;
  }
};
// 给mutations升级的地方，修改state中的变量值最好通过actions中的方法来修改，性能好，快
const actions = { // 异步setter调用方法，推荐使用这个
  addAction (context) {
    context.commit('add', 10)
  },
  reduceAction ({commit}) {
    commit('reduce')
  }
};
// module是由state,mutations,getters,actions几部分封装成的一个整体对象，
// 把该对象开放出去封装到一个store并且把该store对象注册到项目才可以使用。
export default module = {
  state,
  mutations,
  getters,
  actions
}
